import { createRouter, createWebHashHistory } from 'vue-router'
// 如 先导入 后使用，先将所有的组件 都执行了一次
import Login from '@/views/login/Login.vue'
import Layout from '@/views/layout/Layout.vue'
import component from 'element-plus/es/components/tree-select/src/tree-select-option.mjs'



const routes = [
    {
        path: '/',
        redirect: '/login'
    },
    {
        path: '/login',
        component: Login
    },
    //   首页模块
    {
        path: '/layout',
        component: Layout,
        redirect: '/home',
        // 路由元信息,可以自定义任何数据，通过useRoute可以获取到
        meta: {
            title: '首页'
        },
        
        children: [
            {
                path: '/home',
            
                //路由懒加载 
                // 只有访问这个路由时 ，才导入|运行对应的组件
                // 项目逇第一个页面需要 提升加载速度，懒加载必须处理 
                // 如果需要当页面需要提升访问速度，不能做懒加载
                component: () => import('@/views/home/Home.vue')
            },

        ]
    },
    //   账号模块
    {
        path: '/account',
        component: Layout,
        meta: {
            title: '账号管理'
        },
        redirect: '/accountList',
        children: [
            {
                path: '/accountList',
                meta: {
                    title: '账号列表'
                },
                component: () => import('@/views/account/List.vue')
            },
            {
                path: '/accountAdd',
                meta: {
                    title: '添加账号'
                },
                component: () => import('@/views/account/Add.vue')
            },
            {
                path: '/accountCenter',
                meta: {
                    title: '个人中心'
                },
                component: () => import('@/views/account/Center.vue')
            },
            {
                path: '/accountEdit',
                meta: {
                    title: '修改密码'
                },
                component: () => import('@/views/account/Edit.vue')
            },

        ]
    },
    //   商品模块
    {
        path: '/goods',
        meta: {
            title: '商品管理'
        },
        component: Layout,
        redirect: '/goodsList',
        children: [
            {
                path: '/goodsList',
                meta: {
                    title: '商品列表'
                },
                component: () => import('@/views/goods/List.vue')
            },
            {
                path: '/goodsAdd',
                meta: {
                    title: '添加商品'
                },
                component: () => import('@/views/goods/Add.vue')
            },
            {
                path: '/goodsType',
                meta: {
                    title: '商品分类'
                },
                component: () => import('@/views/goods/Type.vue')
            },


        ]
    },
    //   订单模块
    {
        path: '/order',
        meta: {
            title: '订单管理'
        },
        component: Layout,
        redirect: '/orderList',
        children: [
            {
                path: '/orderList',
                component: () => import('@/views/order/Order.vue')
            },
        ]
    },
    //   店铺模块
    {
        path: '/shop',
        meta: {
            title: '店铺管理'
        },
        component: Layout,
        redirect: '/shopInfo',
        children: [
            {
                path: '/shopInfo',
                component: () => import('@/views/shop/Shop.vue')
            },
        ]
    },
    //   统计模块
    {
        path: '/statistics',
        meta: {
            title: '统计数据'
        },
        component: Layout,
        redirect: '/statisticsGoods',
        children: [
            {
                path: '/statisticsGoods',
                meta: {
                    title: '商品统计'
                },
                component: () => import('@/views/statistics/Goods.vue')
            },
            {
                path: '/statisticsOrder',
                meta: {
                    title: '订单统计'
                },
                component: () => import('@/views/statistics/Order.vue')
            }

        ]
    },
    //权限管理
    {
        path: '/permission',
        meta: {
            title: '权限管理'
        },
        component: Layout,
        redirect: '/permissionInfo',
        children: [
            {
                path: '/permissionInfo',
                meta: {
                    title: '权限管理'
                },
                component: () => import('@/views/permission/Info.vue')
            },
            {
                path: '/permissionRole',
                meta: {
                    title: '角色管理'
                },
                component: () => import('@/views/permission/Role.vue')
            }
        ]
    },

    {
        path:'/:pathMatch(.*)*',
        component: () => import('@/views/error/Error.vue')
    }

]
const router = createRouter({
    history: createWebHashHistory(),
    routes
})

// 路由前置守卫
// 如果用户没有登录  不能够访问 除（/login）之外的所有页面  
// 否则  用户已经登录 ，可以访问所有页面
router.beforeEach((to, from) => {
    // 排除 不需要登录的页面，如果是不需要登录的页面  直接去
    let noLogin = ['/login', '/register', '/404', '/resetPwd']
    if (noLogin.includes(to.path)) {
        return true;
    }
    if (sessionStorage.getItem('user')) {
        // 放行
        return true;
    }
    return false

    //to: 要去的页面的信息
    //from: 从哪个页面来的信息
    // next: 放行函数   如果能够去这个页面  next()  如果不能去这个页面  next('/login')
    //next 是可选的  可以通过return true === next()     return false === next('/login')
})

export default router

